//
//  NSDate + Extension.swift
//  1111微博日期处理
//
//  Created by Apple on 15/11/11.
//  Copyright © 2015年 itcast. All rights reserved.
//

import Foundation

extension NSDate {

    ///将服务器返回的日期字符串转换为NSDate
    class func dateWithSinaString(dateString: String) -> NSDate {
    
        //创建日期格式化器
        let formatter = NSDateFormatter()
        
        //指定格式
        formatter.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        
        //在真机环境需要指定区域
        formatter.locale = NSLocale(localeIdentifier: "cn")
        
        //转成NSDate
        let date = formatter.dateFromString(dateString)
        
        //转成功就返回 没转成功返回系统时间
        return date ?? NSDate()
    }
    
    /**
     返回新浪日期描述
     
     刚刚(一分钟内)
     X分钟前(一小时内)
     X小时前(当天)
     昨天 HH:mm(昨天)
     MM-dd HH:mm(一年内)
     yyyy-MM-dd HH:mm(更早期)
     
     */
    func sinaDateDescription() -> String {
    
        //获取日历对象
        let calendar = NSCalendar.currentCalendar()
    
        //判断是否是今天
        if calendar.isDateInToday(self) {
        
            //获取当前系统时间 与 指定时间相差多少秒 ———— 转成Int类型
            let time = Int(NSDate().timeIntervalSinceDate(self))
            
            if time < 60 {
            
                return "刚刚"
                
            }else if time < 60 * 60 {
            
                return "\(time / 60)分钟前"
                
            }else {
            
                return "\(time / 60 / 60)小时前"
            }
            
        }
        
        var fmt = ""
        
        //判断是否是昨天
        if calendar.isDateInYesterday(self) {
        
            fmt = "昨天 HH:mm"
            
            
        } else {
        
            //判断是一年内 还是更早
            let result = calendar.compareDate(self, toDate: NSDate(), toUnitGranularity: NSCalendarUnit.Year)
            
            if result == NSComparisonResult.OrderedSame {   //一年内
            
                fmt = "MM-dd HH:mm"
                
            }else if result == NSComparisonResult.OrderedAscending {   //更早
            
                fmt = "yyyy-MM-dd HH:mm"
            }
        }
        
        let formatter = NSDateFormatter()
        
        formatter.dateFormat = fmt
        
        let dateString = formatter.stringFromDate(self)
        
        return dateString
    }
}